package com.guiwu.caiguanlin.leetcode;

import com.guiwu.caiguanlin.entity.ListNode_21;

import java.util.ArrayList;
import java.util.List;

/**
 * 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
 */
public class Test21 {
    public static void main(String[] args) {

        ListNode_21 list1 = new ListNode_21(1, new ListNode_21(5, new ListNode_21(4,null)));
        ListNode_21 list2 = new ListNode_21(2, new ListNode_21(3, new ListNode_21(6,null)));
        ListNode_21 listNode21 = mergeTwoLists(list1, list2);
        List<Integer> allData = getAllData(listNode21, new ArrayList<>());
        allData.stream().forEach(System.out::println);
    }

    public static List<Integer> getAllData(ListNode_21 listNode, List<Integer> integerList) {
        if (listNode == null) {
            return integerList;
        }
        if (listNode.getNext() == null && listNode.getVal() != 0) {
            integerList.add(listNode.getVal());
            return integerList;
        }
        integerList.add(listNode.getVal());
        return getAllData(listNode.getNext(), integerList);
    }

    public static ListNode_21 mergeTwoLists(ListNode_21 l1, ListNode_21 l2) {
        if (l1 == null) {
            return l2;
        } else if (l2 == null) {
            return l1;
        } else if (l1.getVal() < l2.getVal()) {
            l1.setNext(mergeTwoLists(l1.getNext(), l2));
            return l1;
        } else {
            l2.setNext(mergeTwoLists(l1, l2.getNext()));
            return l2;
        }
    }
}



